package chapter13;

import javax.sound.midi.Soundbank;
import java.math.BigInteger;
import java.util.Formatter;

/**
 * @author : DuJiabao
 * @Date : 2021/2/21 14:48
 * @Project : thinking-in-java
 * @File : null.java
 * @Desc :
 */
public class Conversion {
  public static void main(String[] args) {
    Formatter f = new Formatter(System.out);

    char u = 'a';
    System.out.println("u = 'a'");
    f.format("s: %s\n", u);  // 转换成字符串， "a"
    f.format("c: %c\n", u);  // 字符，'a'
    f.format("b: %b\n", u);  // true
    f.format("h: %h\n", u);  // 'a'在ASCII码中的十六进制表示，61

    int v = 121;
    System.out.println("v = 121");
    f.format("d: %d\n", v);  // 十进制， 121
    f.format("c: %c\n", v);  // 转换成字符，y，ASCII码十进制第121个为y
    f.format("b: %b\n", v);  // true
    f.format("s: %s\n", v);  // "121"
    f.format("x: %x\n", v);  // 十六进制，79
    f.format("h: %h\n", v);  // 散列码，79

    BigInteger w = new BigInteger("50000000000");
    System.out.println("w = new BigInteger(\"50000000000\")");
    f.format("d: %d\n", w);  // 50000000000
    f.format("b: %b\n", w);  // true
    f.format("s: %s\n", w);  // 50000000000
    f.format("x: %x\n", w);  // ba43b7400
    f.format("h: %h\n", w);  // a43b7555

    double x = 179.543;
    System.out.println("x = 179.543");
    f.format("b: %b\n", x);  // true
    f.format("s: %s\n", x);  // 179.543
    f.format("f: %f\n", x);  // 179.543000  (默认小数点后6位)
    f.format("e: %e\n", x);  // 1.795430e+02
    f.format("h: %h\n", x);  // 1ef462c

    Conversion y = new Conversion();  // 类的实例化对象本身
    System.out.println("y = new Conversion()");
    f.format("b: %b\n", y);  // true
    f.format("s: %s\n", y);  // chapter13.Conversion@cc34f4d
    f.format("h: %h\n", y);  // cc34f4d

    boolean z = false;
    System.out.println("z = false");
    f.format("b: %b\n", z);  // false
    f.format("s: %s\n", z);  // false
    f.format("h: %h\n", z);  // 4d5
  }
}
